// Tray.cpp: implementation of the CTray class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Tray.h"
#include "coodtimer.h"
#include "myWnd.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CTray::CTray()
:m_sText(_strdup(g_szTitle)),
 m_fPercent(0.f)
{
	NOTIFYICONDATA nid;
	Fill(nid);
	Shell_NotifyIcon(NIM_ADD,&nid); 
	Set();
}

CTray::~CTray()
{
	NOTIFYICONDATA nid;
	Fill(nid);
	Shell_NotifyIcon(NIM_DELETE,&nid); 
	Clear();

}
void CTray::Set(PCSTR s)
{
	Clear();
	m_sText=_strdup(s);
	Set();
}
void CTray::Set(float percent)
{
	m_fPercent=percent;
	Set();
}
void CTray::Clear()
{
	if(m_sText)
		free(m_sText);
	m_sText=NULL;
}
void CTray::Set()
{
	NOTIFYICONDATA nid;
	Fill(nid);
	Shell_NotifyIcon(NIM_MODIFY ,&nid); 
}
void CTray::Fill(NOTIFYICONDATA& nid)
{
	nid.cbSize=sizeof(NOTIFYICONDATA);
    nid.hWnd=g_Wnd.m_hWnd;
    nid.uID=233; 
    nid.uFlags=NIF_TIP|NIF_MESSAGE|NIF_ICON; 
    nid.uCallbackMessage=WM_CC_TRY;
	m_TrayIcon.MakeIcon(m_fPercent);
	nid.uFlags|=NIF_ICON; 
	nid.hIcon=m_TrayIcon.m_hIcon; 
	strncpy(nid.szTip,m_sText,64);
}